#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<vector>
using namespace std;

//int main() {
//    int a;
//    while (cin >> a)
//    {
//        vector<int> v;
//        v.reserve(a);
//        while (a--)
//        {
//            int b;
//            cin >> b;
//            v.push_back(b);
//        }
//    }
//    return 0;
//}

#include <iostream>
#include<vector>
#include<string>
#include<set>
using namespace std;

//bool compare(string& s1, string& s2)
//{
//    string::iterator it1 = s1.begin();
//    string::iterator it2 = s2.begin();
//    while (it1 != s1.end() && it2 != s2.end())
//    {
//        if (*it1 == *it2)
//        {
//            ++it1;
//            ++it2;
//        }
//        else
//            return false;
//    }
//    if (it1 == s1.end() && it2 == s2.end())
//        return true;
//    else
//        return false;
//}

//int main() {
//    int a;
//    while (cin >> a)
//    {
//      
//        string s1;
//        string s2;
//        cin >> s1;
//        cin >> s2;
//        if (a < 2)
//        {
//            cout << -1 << endl;
//        }
//        else
//        {
//            vector<string> v;          
//            int aa = a;
//            v.reserve(a);
//            while (a--)
//            {
//                string b;
//                cin >> b;
//                v.push_back(b);
//            }
//
//            vector<int> cam(aa, 0);
//            vector<string>::iterator it = v.begin();
//            while (it != v.end())
//            {
//                if (s1 == *it)
//                    cam[it - v.begin()] = 1;
//                if (s2 == *it)
//                    cam[it - v.begin()] = 2;
//                ++it;
//            }
//
//            vector<int>::iterator cit = cam.begin();
//            vector<int>::iterator it_1 = cam.end();
//            vector<int>::iterator it_2 = cam.end();
//            int ret = aa;
//            while (cit != cam.end())
//            {
//                if (*cit == 1)
//                    it_1 = cit;
//
//                if (*cit == 2 && it_1 != cam.end())
//                {
//                    if(it_2 == cam.end() || (it_2 != cam.end() && it_2 < it_1))
//                    {
//                        it_2 = cit;
//
//                        int tmp = it_2 - it_1;
//                        if (tmp < ret)
//                            ret = tmp;
//                    }
//                }
//                ++cit;
//            }
//
//            if (it_1 == cam.end())
//                cout << -1 << endl;
//
//            else
//            {
//               
//                cit = cam.begin();
//                it_1 = cam.end();
//               it_2 = cam.end();
//                
//                while (cit != cam.end())
//                {
//                    if (*cit == 2)
//                        it_2 = cit;
//
//                    if (*cit == 1 && it_2 != cam.end())
//                    {
//                        if (it_1 == cam.end() || (it_1 != cam.end() && it_1 < it_2))
//                        {
//                            it_1 = cit;
//
//                            int tmp = it_1 - it_2;
//                            if (tmp < ret)
//                                ret = tmp;
//                        }
//                    }
//                    ++cit;
//                }
//                if (it_1 == cam.end())
//                    cout << -1 << endl;
//                else
//                    cout << ret << endl;
//            }
//        }
//        
//
//    }
//    return 0;
//}


//int main() {
//    int a;
//    while (cin >> a)
//    {
//
//        string s1;
//        string s2;
//        cin >> s1;
//        cin >> s2;
//        if (a < 2)
//        {
//            cout << -1 << endl;
//        }
//        else
//        {
//            vector<string> v;
//            int aa = a;
//            v.reserve(a);
//            while (a--)
//            {
//                string b;
//                cin >> b;
//                v.push_back(b);
//            }
//
//            vector<int> cam(aa, 0);
//            vector<string>::iterator it = v.begin();
//            while (it != v.end())
//            {
//                if (s1 == *it)
//                    cam[it - v.begin()] = 1;
//                if (s2 == *it)
//                    cam[it - v.begin()] = 2;
//                ++it;
//            }
//
//            vector<int>::iterator cit = cam.begin();
//            vector<int>::iterator it_1 = cam.end();
//            vector<int>::iterator it_2 = cam.end();
//            int ret = aa;
//           
//            while (cit != cam.end())
//            {
//                if (1 == *cit)
//                {
//                    it_1 = cit;
//                    if (it_2 != cam.end())
//                    {
//                        int tmp = it_2 - it_1;
//                        if (tmp < 0)
//                            tmp *= -1;
//                        if (tmp < ret)
//                            ret = tmp;
//                    }
//                }
//                if (2 == *cit)
//                {
//                    it_2 = cit;
//                    if (it_1 != cam.end())
//                    {
//                        int tmp = it_2 - it_1;
//                        if (tmp < 0)
//                            tmp *= -1;
//                        if (tmp < ret)
//                            ret = tmp;
//                    }
//                }
//                ++cit;
//            }
//
//            if (ret != aa)
//                cout << ret << endl;
//            else
//                cout << -1 << endl;
//        }
//
//
//    }
//    return 0;
//}

//int main() {
//    int a;
//    while (cin >> a)
//    {
//        vector<int> v;
//        v.reserve(a);
//        while (a--)
//        {
//            int b;
//            cin >> b;
//            v.push_back(b);
//        }
//
//        int ret = 0;
//        vector<int>::iterator it = v.begin();
//        vector<int>::iterator a = ++v.begin();
//        if (*it > *a)
//            it = a;
//        ret += *it;
//
//
//        while (it != --v.end())
//        {
//            vector<int>::iterator one = it + 1;
//            vector<int>::iterator two = it + 2;
//
//            if (two == v.end())
//                break;
//
//            if (*one < *two)
//                it = one;
//            else
//                it = two;
//            ret += *it;
//
//        }
//        cout << ret << endl;
//
//    }
//    return 0;
//}


//int main() {
//    int a;
//    while (cin >> a)
//    {
//        vector<int> v;
//        v.reserve(a);
//        while (a--)
//        {
//            int b;
//            cin >> b;
//            v.push_back(b);
//        }
//
//        int ret = 0;
//        vector<int>::iterator it = v.begin();
//        vector<int>::iterator a = ++v.begin();
//        
//      
//        if(v.end() - v.begin() > 3)
//        {
//            if (*it > *a)
//                it = a;
//            ret += *it;
//            while (it < v.end() - 4)
//            {
//                vector<int>::iterator one = it + 1;
//                vector<int>::iterator two = it + 2;
//
//                if (two == v.end())
//                    break;
//
//                if (*one < *two)
//                    it = one;
//                else
//                    it = two;
//                ret += *it;
//
//            }
//        }
//        if (v.end() - it == 4)
//        {
//            if (*(it + 2) < *(it + 1) + *(it + 3))
//                ret += *(it + 2);
//            else
//                ret += *(it + 1) + *(it + 3);
//        }
//        else if (v.end() - it == 3)
//        {
//            if (*(it + 1) < *(it + 2))
//                ret += *(it + 1);
//            else
//                ret += *(it + 2);
//        }
//        cout << ret << endl;
//
//    }
//    return 0;
//}


int main() {
    int a;
    while (cin >> a)
    {
        vector<int> v;
        v.reserve(a + 1);
        v.push_back(0);
        while (a--)
        {
            int b;
            cin >> b;
            v.push_back(b);
        }

        int ret = 0;
        vector<int>::iterator it = v.begin();
      
        while (it != --v.end())
        {            
            int a = 0, b = 0;         
            
               
                if (it + 2 == v.end())
                    break;
                else
                {
                    a += *(it + 1);
                    if (it + 3 == v.end())
                        a += *(it + 2);
                    else
                    {
                        if (*(it + 2) < *(it + 3))
                            a += *(it + 2);
                        else
                            a += *(it + 3);
                    }
                }
            
            
                b += *(it + 2);
                if (it + 4 < v.end())
                {
                    
                        if (*(it + 3) < *(it + 4))
                            b += *(it + 3);
                        else
                            b += *(it + 4);
                    
                }
            
            if (a < b)
                ++it;
            else
                it += 2;
            ret += *it;

        }
        cout << ret << endl;

    }
    return 0;
}